Skill Development

লারাভেল কি এবং কেন? || Laravel বাংলা টিউটোরিয়াল

লারাভেল কি  এবং কেন ? || Laravel  বাংলা টিউটোরিয়াল

Laravel একটি ফ্রি, ওপেন-সোর্স PHP ফ্রেমওয়ার্ক যা ডেভেলপারদের ওয়েবসাইট এবং অ্যাপ তৈরি করতে সহায়তা করে। এর বিল্ট-ইন ফিচার, ব্যবহার সহজতা এবং উচ্চ ট্রাফিক পরিচালনা করার সক্ষমতার জন্য এটি ওয়েব ডেভেলপমেন্টে অত্যন্ত জনপ্রিয়।

ডেভেলপারদেরকে  অ্যামাজিং কোডিং এক্সপেরিয়েন্স উপহার দিতে ল্যারাভেল প্রতিনিয়তই সংগ্রাম করে চলেছে।  ফলে এটি আপনাকে অ্যাডভান্স এবং শক্তিশালী বৈশিষ্ট্য  যেমন- thorough dependency injection,  expressive database abstraction layer, queue, scheduled job, unit এবং  integration testing  সহ আরও বহুবিধ ফিচার সরবরাহ করে।

আপনি PHP ওয়েব ফ্রেমওয়ার্কে নতুন বা বহু বছরের অভিজ্ঞ যাই হোন না কেন, লারাভেল এমন একটি ফ্রেমওয়ার্ক যা আপনার বেড়ে উঠার সাথে সাথে নিজেও বেড়ে উঠতে সক্ষম। যাইহোক, ল্যারাভেল যেমন আপনাকে ওয়েব ডেভেলপার হতে  সহযোগীতা করবে, ঠিক তেমনি আপনার বর্তমান দক্ষতাকে পরবর্তী স্তরে নিতেও সমানতালে সহযোগীতা করবে। 

আপনি কি লারাভেলে নতুন?  তবে হাতে-কলমে  ল্যারাভেল শিখতে অফিসিয়াল  ল্যারাভেল বুটিক্যাম্প টিউটোরিয়ালটি দেখে আসুন। 

 

কেন লারাভেল(Why Laravel)?

 ওয়েব অ্যাপ্লিকেশন তৈরির জন্য গাদী গাদী  টুলস এবং ফ্রেমওয়ার্ক পাওয়া যায়৷ তবে, মডার্ন এবং ফুল-স্ট্যাক ওয়েব অ্যাপ্লিকেশন তৈরির জন্য বর্তমানে লারাভেলই সেরা ।

প্রগতিশীল ফ্রেমওয়ার্ক(A Progressive Framework)

আমরা লারাভেলকে "প্রগতিশীল" ফ্রেমওয়ার্ক হিসেবে আখ্যায়িত করতে চাই। আসলে,  আমরা এটা বোঝাতে চাচ্ছি যে, আপনার দক্ষতা বৃদ্ধির সাথে সাথে লারাভেলও নিজেকে প্রতিনিয়ত সমৃদ্ধ করছে। । আপনি যদি ওয়েব ডেভেলপমেন্টে আপনার যাত্রা শুরু করতে চান, তবে লারাভেল এর অফিসিয়াল ডকুমেন্টশনের আলোকে আমাদের এই বাংলা টিউটোরিয়াল আপনাকে সবথেকে বেশি সহযোগিতা করবে।

সিনিয়র ডেভেলপারদের জন্য লারাভেল ডিপেন্ডেন্সি ইনজেকশন, ইউনিট টেস্টিং, রিয়্যাল টাইম ইভেন্টসহ(dependency injection, unit testing, queue, real-time event)  নানাবিধ  শক্তিশালী টুলস সরবরাহ করে। শুধু তাই নয়,  লারাভেল পেশাদার ওয়েব অ্যাপ্লিকেশন তৈরিতে এবং এন্টারপ্রাইজ কাজের লোড নিতেও সক্ষম।

ক্রমবর্ধমান ফ্রেমওয়ার্ক(A Scalable Framework)

লারাভেল অবিশ্বাস্যভাবে ক্রমবর্ধমান। পিএইচপির স্কেলিং-বান্ধব প্রকৃতি এবং Redis-এর মতো দ্রুত ও বিতরণকৃত ক্যাশ সিস্টেম( fast & distributed cache systems) বিল্ট-ইন সাপোর্ট করার জন্য লারভেলের প্রতি কৃতজ্ঞতা জ্ঞাপন করছি। প্রকৃতপক্ষে,  লক্ষ লক্ষ রিকুয়েস্ট পরিচালনা করতে লারাভেল অ্যাপ্লিকেশনকে স্কেল করা হয়েছে।

A Community Framework

লারাভেল পিএইচপি ইকোসিস্টেমের সেরা প্যাকেজসমূহের সমন্বয়ে গঠিত সবচেয়ে শক্তিশালী এবং ডেভেলপার-বান্ধব ফ্রেমওয়ার্ক। এছাড়াও, বিশ্বজুড়ে হাজার হাজার প্রতিভাবান ও সেরা ডেভেলপাররা লারাভেল ফ্রেমওয়ার্কে অবদান রেখেছেন এবং প্রতিনিয়তই রাখছেন। কে জানে, হয়তো আপনিও একদিন লারাভেলের একজন সেরা অবদানকারী হয়ে উঠতে পারেন।

Content added || updated By

লারাভেল ইন্সটলেশন (Laravel Installation)

লারাভেল দিয়ে কোনো প্রোজেক্ট তৈরির পূর্বে প্রথমেই আপনার লোকাল মেশিনে পিএইচপি এবং কম্পোজার ইনস্টল নিশ্চিত করতে হবে। আপনি যদি macOS বা Windows ব্যবহারকারী হোন, তবে লারাভেল হার্ড এর মাধ্যমে কয়েক মিনিটের মধ্যেই  পিএইচপি এবং কম্পোজার ইনস্টল করে নিতে পারেন। এছাড়া, নোড এবং এনপিএমও  ইনস্টল করে নিতে পারেন। 

পিএইচপি এবং কম্পোজার ইনস্টল সম্পন্ন হলে, আপনি কনসোল কমান্ড থেকে কম্পোজারের create-projectকমান্ডের মাধ্যেমে একটি নতুন লারাভেল প্রোজেক্ট তৈরি করতে পারেন:

composer create-project laravel/laravel:^11.0 example-app

অথবা, আপনি কম্পোজারের মাধ্যমে গ্লোবালি লারাভেল ইনস্টলার  ইনস্টল করে নতুন লারাভেল প্রোজেক্ট তৈরি করতে পারেন:

composer global require laravel/installer
laravel new example-app

প্রোজেক্ট তৈরি সম্পন্ন হলে,serve আর্টিসান কমান্ড দিয়ে  লারাভেলের লোকাল ডেভেলপমেন্ট সার্ভার চালু করুন:

cd example-app
php artisan serve

আর্টিসান ডেভেলপমেন্ট সার্ভার চালু হলে, ওয়েব ব্রাউজারে http://localhost:8000  ইউআরএল এরা মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনটি অ্যাক্সেস করতে পারবেন। এরপরে , আপনি লারাভেল ইকোসিস্টেমে আপনার পরবর্তী পদক্ষেপগুলি নেওয়া শুরু করতে পারবেন৷ 

 

আপনি যদি  Laravel অ্যাপ্লিকেশন ডেভেলপ করার সময় বিশেষ সুবিধা নিতে চান তবে লারাভেল  স্টার্টার কিটসমূহের মধ্যে যেকোনো একটি ব্যবহার করতে পারেন।  লারাভেলের স্টার্টার কিটসমূহ আপনার নতুন লারাভেল অ্যাপ্লিকেশনের জন্য ব্যাকএন্ড এবং ফ্রন্টএন্ড আথেন্টিকেশন স্ক্যাফোল্ডিং(authentication scaffolding)  সরবরাহ করে।  

 প্রাথমিক কনফিগারেশন(Initial Configuration)

Laravel ফ্রেমওয়ার্কের সমস্ত কনফিগারেশন ফাইল config ডিরেক্টরিতে সংরক্ষণ হয়। এই ডিরেক্টরির প্রতিটি অপশনেই ডকুমেন্ট সংযুক্ত, তাই ফাইলগুলি দেখার সময় লারাভেল কর্তৃক সরবরাহকৃত অপশন সমূহের সঙ্গে নির্দ্বিধায় পরিচিত হয়ে উঠতে পারেন।

লারাভেল যে বান্ডেল সরবরাহ করে এই বাইরে প্রায়ক্ষেত্রেই অতিরিক্ত কোন কনফিগারেশনের প্রয়োজন পড়ে না। আপনি মুক্তভাবে ডেভেলপ  শুরু করে করতে পারেন। যাইহোক, আপনি config/app.phpফাইল এবং এর ডকুমেন্টেশন পর্যালোচনা করতে পারেন। এতেtimezoneএবংlocaleএর মতো বেশ কিছু অপশন রয়েছে যেগুলো আপনি আপনার অ্যাপ্লিকেশনের প্রয়োজন অনুযায়ী পরিবর্তন করতে চান।

 

এনভাইরনমেন্ট ভিত্তিক কনফিগারেশন(Environment Based Configuration)

যেহেতু লারাভেলের অনেক কনফিগারেশন অপশনের মান আপনার লোকাল মেশিন বা প্রোডাকশন ওয়েব সার্ভারের উপর নির্ভর করে পরিবর্তিত হতে পারে, তাই আপনার  প্রয়োজন অনুযায়ী অ্যাপ্লিকেশনের root এ অবস্থিত.env ফাইলে গুরুত্বপূর্ণ কনফিগারেশন অপশনের মান ডিফাইন করতে পারেন।

যেহেতু আপনার অ্যাপ্লিকেশন ব্যবহার করবে এমন প্রত্যেক ডেভেলপার /সার্ভারের জন্য  ভিন্ন এনভাইরনমেন্ট কনফিগারেশন প্রয়োজন হতে পারে, তাই আপনার .env ফাইলকে আপনার অ্যাপ্লিকেশনের source control এ commit করা হওয়া উচিত হবে না।  এছাড়া যেহেতু যেকোনো সংবেদনশীল প্রমাণপত্রাদি উন্মুক্ত থাকে, তাই কোনো অনুপ্রবেশকারী আপনার সোর্স কন্ট্রোল রিপোজিটরিতে অ্যাক্সেস লাভ করলে নিরাপত্তা ঝুঁকিতে পড়তে হবে।

 

.env ফাইল এবং এনভাইরনমেন্ট ভিত্তিক কনফিগারেশন সম্পর্কে আরও জানতে সম্পূর্ণ কনফিগারেশন ডকুমেন্টেশন দেখুন।

 

ডাটাবেস এবং মাইগ্রেশন (Database and Migration)

এক্ষণে আপনি আপনার লারাভেল অ্যাপ্লিকেশন তৈরি করে ফেলেছেন, আপনি সম্ভবত ডাটাবেসে কিছু ডেটা সংরক্ষণ করতে চান। ডিফল্টরূপে, আপনার অ্যাপ্লিকেশনের .envকনফিগারেশন ফাইলে SQLite  ডাটাবেসের সাথে সংযোগ দেওয়া থাকে। 

প্রজেক্ট তৈরি করার সময়, Laravel আপনার জন্য একটি database/database.sqliteফাইল তৈরি করে এবং অ্যাপ্লিকেশনের ডাটাবেস টেবিল তৈরি করতে প্রয়োজনীয় মাইগ্রেশন চালিয়ে থাকে।

If you prefer to use another database driver such as MySQL or PostgreSQL, you can update your .env configuration file to use the appropriate database. For example, if you wish to use MySQL, update your .env configuration file's DB_* variables like so:

আপনি যদি SQLite এর পরিবর্তে MySQL বা PostgreSQL এর মত অন্যকোনো ডাটাবেস ড্রাইভার ব্যবহার করতে চান, তাহলে আপনি আপনার.envকনফিগারেশন ফাইল আপডেট করে নিতে পারেন। উদাহরণস্বরূপ, আপনি যদি MySQL ব্যবহার করতে চান, তাহলে আপনার .env কনফিগারেশন ফাইলের DB_* ভেরিয়েবল আপডেট করুন।  যেমন:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

আপনি যদি SQLite ছাড়া অন্য কোনো ডাটাবেস ব্যবহার করতে চান, তাহলে আপনাকে ডাটাবেস তৈরি করতে হবে এবং আপনার অ্যাপ্লিকেশনের ডাটাবেস মাইগ্রেশন চালাতে হবে:

php artisan migrate

 

আপনি যদি macOS-এ ডেভেলপ করেন এবং লোকাল মেশিনে MySQL, PostgreSQL বা Redis ইনস্টল করতে চান, তাহলে DBngin ব্যবহার করার কথা বিবেচনা করুন।

 

ডিরেক্টরি কনফিগারেশন(Directory Configuration)

আপনার ওয়েব সার্ভারকে এমনভাবে কনফিগার করা উচিৎ যেন লারাভেল অ্যাপ্লিকেশন "ওয়েব ডিরেক্টরি" এর root থেকে পরিবেশিত(served)  হয়।  "ওয়েব ডিরেক্টরি" এর সাবডিরেক্টরি থেকে লারাভেল অ্যাপ্লিকেশন পরিবেশন করা উচিৎ হবে না। এমনটি করলে আপনার অ্যাপ্লিকেশনের সংবেদনশীল(sensitive) ফাইলগুলি ফাঁস হয়ে যাওয়ার সম্ভাবনা থাকে। ৷

সেইল ব্যবহার করে ডকার  ইন্সটল (Docker Installation Using Sail)

আমরা চাই,  আপনার পছন্দের অপারেটিং সিস্টেমে লারাভেল ডেভেলপ যতটা সম্ভব সহজ হোক। সুতরাং, আপনি আপনার লোকাল মেশিনে বিভিন্নভাবে লারাভেল প্রজেক্ট ডেভেলপ এবং রান করাতে পারেন।  Docker ব্যবহৃত Laravel Sail হলো আপনার লারাভেল প্রজেক্ট রান করার জন্য একটি অন্তর্নির্মিত সমাধান(built-in solution)। 

ডকার হলো small, light-weight "container" এ  অ্যাপ্লিকেশন এবং সার্ভিস রান করার টুলস যা আপনার লোকাল মেশিনে ইনস্টল করা সফ্টওয়্যার বা কনফিগারেশনে হস্তক্ষেপ করে না। এর মানে হলো আপনার লোকাল মেশিনে ওয়েব সার্ভার এবং ডাটাবেসের মতো জটিল ডেভেলপমেন্ট টুল কনফিগার বা সেট আপ করার বিষয়ে আপনাকে চিন্তা করতে হবে না। শুরু করার জন্য, আপনাকে শুধুমাত্র Docker Desktop ইনস্টল করতে হবে।

লারাভেল সেইল(Sail) লারাভেলের ডিফল্ট ডকার কনফিগারেশনের সাথে ইন্টারঅ্যাক্ট করার জন্য light-weight command-line interface। ডকার এর পূর্ব অভিজ্ঞতা ছাড়াই সেইল পিএইচপি, মাইএসকিউএল এবং রেডিস এর সমন্বয়ে লারাভেল অ্যাপ্লিকেশন তৈরির সূচনা বিন্দু প্রদান করে।

 

আপনি কি ইতিমধ্যেই একজন ডকার বিশেষজ্ঞ? চিন্তা করবেন না! Laravel এ অন্তর্ভুক্তdocker-compose.ymlফাইল ব্যবহার করে Sail সম্পর্কিত যাবতীয়  কাস্টমাইজ করা  যায়।

 

ম্যাকওএস-এ সেইল (Sail on macOS)

আপনার অপারেটিং সিস্টেম যদি macOS হয় এবং এতে ইতিমধ্যেই  Docker Compose ইনস্টল করা থাকে, তবে আপনি একটি সাধারণ টার্মিনাল কমান্ড ব্যবহার করে নতুন লারাভেল প্রোজেক্ট তৈরি করতে পারেন। উদাহরণস্বরূপ,  "example-app" নামের ডিরেক্টরিতে একটি নতুন লারাভেল অ্যাপ্লিকেশন তৈরি করতে,  আপনার টার্মিনালে নিম্নের কমান্ডটি চালান:

curl -s "https://laravel.build/example-app" | bash

অবশ্যই, আপনি চাইলে এই ইউআরএল-এ "example-app"  এর পরিবর্তে আপনার পছন্দমতো অন্যকিছু দিতে পারেন- শুধু নিশ্চিত করুন যে অ্যাপ্লিকেশনের নামটিতে শুধুমাত্র alpha-numeric  অক্ষর, ড্যাশ এবং আন্ডারস্কোর রয়েছে৷ আপনি যে ডিরেক্টরি থেকে কমান্ডটি চালাবেন তার মধ্যে লারাভেল অ্যাপ্লিকেশনের ডিরেক্টরি তৈরি করা হবে।

আপনার লোকাল মেশিনে Sail-এর অ্যাপ্লিকেশন কন্টেইনার বিল্ট হওয়ার সময় Sail ইনস্টলেশনে কয়েক মিনিট সময় লাগতে পারে।

প্রজেক্ট  তৈরি হওয়ার পরে, আপনি অ্যাপ্লিকেশন ডিরেক্টরিতে নেভিগেট করতে পারেন এবং Laravel Sail চালু করতে পারেন। লারাভেল সেল লারাভেলের ডিফল্ট ডকার কনফিগারেশনের সাথে ইন্টারঅ্যাক্ট করার জন্য সাধারণ কমান্ড-লাইন ইন্টারফেস প্রদান করে:

cd example-app./vendor/bin/sail up

অ্যাপ্লিকেশনের ডকার কন্টেইনার চালু হয়ে গেলে, আপনার অ্যাপ্লিকেশনের database migration করা উচিত:

./vendor/bin/sail artisan migrate

অবশেষে, আপনি আপনার ওয়েব ব্রাউজারে  http://localhost ইউআরএল ভিজিট করে আপনার অ্যাপ্লিকেশনটি অ্যাক্সেস করতে পারেন। 

Laravel Sail সম্পর্কে আরও জানতে  অফিসিয়াল ডকুমেন্টেশন  দেখুন।

 

উইন্ডোজে সেইল (Sail on Windows)

আপনার উইন্ডোজ মেশিনে নতুন লারাভেল অ্যাপ্লিকেশন তৈরি করার পূর্বে  ডকার ডেস্কটপ ইনস্টল করতে হবে।  এর পরে, আপনাকে নিশ্চিত করতে হবে যে Linux 2 (WSL2) এর জন্য Windows সাবসিস্টেম ইনস্টল এবং সক্রিয়(enabled) করা আছে। WSL আপনাকে Windows 10-এ নেটিভলি লিনাক্স বাইনারি এক্সিকিউটেবল চালানোর অনুমতি দেয়। কিভাবে WSL2 ইন্সটল এবং সক্রিয়(enabled) করতে হয় তার তথ্য Microsoft এর developer environment documentation  এর মধ্যে পাওয়া যাবে।

 

WSL2 ইনস্টল এবং সক্ষম করার পরে, আপনাকে নিশ্চিত করতে হবে যে ডকার ডেস্কটপ WSL2 ব্যাকএন্ড ব্যবহার করার জন্য কনফিগার করা হয়েছে।

এখন, আপনি আপনার প্রথম লারাভেল প্রজেক্ট তৈরির জন্য প্রস্তুত। আপনার Windows Terminal  চালু করে WSL2 Linux অপারেটিং সিস্টেমের জন্য একটি নতুন টার্মিনাল সেশন শুরু করুন। এর পরে, নতুন লারাভেল প্রজেক্ট তৈরি করতে একটি সাধারণ টার্মিনাল কমান্ড ব্যবহার করতে পারেন। উদাহরণস্বরূপ, “example-app” ডিরেক্টরিতে নতুন লারাভেল অ্যাপ্লিকেশন তৈরি করতে টার্মিনালে নিম্নের কমান্ডটি চালাতে পারেন:

curl -s https://laravel.build/example-app | bash

অবশ্যই, আপনি চাইলে এই ইউআরএল-এ "example-app"  এর পরিবর্তে আপনার পছন্দমতো অন্যকিছু দিতে পারেন- শুধু নিশ্চিত করুন যে অ্যাপ্লিকেশনের নামটিতে শুধুমাত্র alpha-numeric  অক্ষর, ড্যাশ এবং আন্ডারস্কোর রয়েছে৷ আপনি যে ডিরেক্টরি থেকে কমান্ডটি চালাবেন তার মধ্যে লারাভেল অ্যাপ্লিকেশনের ডিরেক্টরি তৈরি করা হবে।

আপনার লোকাল মেশিনে Sail-এর অ্যাপ্লিকেশন কন্টেইনার বিল্ট হওয়ার সময় Sail ইনস্টলেশনে কয়েক মিনিট সময় লাগতে পারে।

প্রজেক্ট  তৈরি হওয়ার পরে, আপনি অ্যাপ্লিকেশন ডিরেক্টরিতে নেভিগেট করতে পারেন এবং Laravel Sail চালু করতে পারেন। লারাভেল সেল লারাভেলের ডিফল্ট ডকার কনফিগারেশনের সাথে ইন্টারঅ্যাক্ট করার জন্য সাধারণ কমান্ড-লাইন ইন্টারফেস প্রদান করে:

cd example-app./vendor/bin/sail up

অ্যাপ্লিকেশনের ডকার কন্টেইনার চালু হয়ে গেলে, আপনার অ্যাপ্লিকেশনের database migration করা উচিত:

./vendor/bin/sail artisan migrate

অবশেষে, আপনি আপনার ওয়েব ব্রাউজারে  http://localhost ইউআরএল ভিজিট করে আপনার অ্যাপ্লিকেশনটি অ্যাক্সেস করতে পারেন। 

 

Laravel Sail সম্পর্কে আরও জানতে  অফিসিয়াল ডকুমেন্টেশন  দেখুন।

WSL2 এ ডেভেলপ করা (Developing Within WSL2)

অবশ্যই, আপনাকে আপনার WSL2 এর মধ্যে তৈরি করা Laravel অ্যাপ্লিকেশন ফাইলগুলিকে মডিফাই করার সক্ষমতা থাকতে হবে। এর জন্য, আমরা আপনাকে মাইক্রোসফটের ভিজ্যুয়াল স্টুডিও কোড এডিটর এবং রিমোট ডেভেলপমেন্টের জন্য তাদের ফার্স্ট-পার্টি এক্সটেনশন ব্যবহার করার পরামর্শ দিচ্ছি।

একবার এই টুলগুলি ইনস্টল হয়ে গেলে, আপনি আপনার অ্যাপ্লিকেশনের রুট ডিরেক্টরি থেকে উইন্ডোজ টার্মিনাল ব্যবহার করে code .কমান্ড এক্সিকিউট করে যেকোনো লারাভেল প্রজেক্ট ওপেন করতে পারেন।

 

লিনাক্সে সেইল (Sail on Linux)

আপনার অপারেটিং সিস্টেম যদি লিনাক্সে হয় এবং এতে ইতিমধ্যেই  Docker Compose ইনস্টল করা থাকে, তবে আপনি একটি সাধারণ টার্মিনাল কমান্ড ব্যবহার করে নতুন লারাভেল প্রোজেক্ট তৈরি করতে পারেন।

আপনি যদি লিনাক্সের জন্য Docker Desktop ব্যবহার করেন তবে আপনাকে নিম্নের কমান্ডটি চালাতে হবে। অন্যথায় আপনি এই ধাপটি এড়িয়ে যেতে পারেন:

docker context use default

তারপর, "example-app" নামের ডিরেক্টরিতে একটি নতুন লারাভেল অ্যাপ্লিকেশন তৈরি করতে,  আপনার টার্মিনালে নিম্নের কমান্ডটি চালান:

curl -s https://laravel.build/example-app | bash

অবশ্যই, আপনি চাইলে এই ইউআরএল-এ "example-app"  এর পরিবর্তে আপনার পছন্দমতো অন্যকিছু দিতে পারেন- শুধু নিশ্চিত করুন যে অ্যাপ্লিকেশনের নামটিতে শুধুমাত্র alpha-numeric  অক্ষর, ড্যাশ এবং আন্ডারস্কোর রয়েছে৷ আপনি যে ডিরেক্টরি থেকে কমান্ডটি চালাবেন তার মধ্যে লারাভেল অ্যাপ্লিকেশনের ডিরেক্টরি তৈরি করা হবে।

আপনার লোকাল মেশিনে Sail-এর অ্যাপ্লিকেশন কন্টেইনার বিল্ট হওয়ার সময় Sail ইনস্টলেশনে কয়েক মিনিট সময় লাগতে পারে।

প্রজেক্ট  তৈরি হওয়ার পরে, আপনি অ্যাপ্লিকেশন ডিরেক্টরিতে নেভিগেট করতে পারেন এবং Laravel Sail চালু করতে পারেন। লারাভেল সেল লারাভেলের ডিফল্ট ডকার কনফিগারেশনের সাথে ইন্টারঅ্যাক্ট করার জন্য সাধারণ কমান্ড-লাইন ইন্টারফেস প্রদান করে:

cd example-app./vendor/bin/sail up

অ্যাপ্লিকেশনের ডকার কন্টেইনার চালু হয়ে গেলে, আপনার অ্যাপ্লিকেশনের database migration করা উচিত:

./vendor/bin/sail artisan migrate

অবশেষে, আপনি আপনার ওয়েব ব্রাউজারে  http://localhost ইউআরএল ভিজিট করে আপনার অ্যাপ্লিকেশনটি অ্যাক্সেস করতে পারেন। 

Laravel Sail সম্পর্কে আরও জানতে  অফিসিয়াল ডকুমেন্টেশন  দেখুন।

 

সেইল সেবা নির্বাচন (Choosing Your Sail Services)

Sail এর মাধ্যমে নতুন Laravel অ্যাপ্লিকেশন তৈরি করার সময়, আপনার নতুন অ্যাপ্লিকেশনেরdocker-compose.ymlফাইলে কোন পরিষেবাগুলি কনফিগার করা উচিত তা নির্ধারণ করতে আপনি with কুয়েরি স্ট্রিং ভেরিয়েবল ব্যবহার করতে পারেন৷ সরবরাহকৃত পরিষেবাগুলির মধ্যে রয়েছে mysql, pgsql, mariadb, redis, memcached, meilisearch, typeense, minio, selenium, এবং mailpit:

curl -s "https://laravel.build/example-app?with=mysql,redis" | bash

আপনি কোন সার্ভিসমুহ কনফিগার করতে চান তা নির্দিষ্ট না করলেmysql, redis, meilisearch, mailpit এবং selenium  ডিফল্ট স্ট্যাক হিসেবে কনফিগার  হবে।

আপনি URL-এ devcontainer প্যারামিটার যোগ করে Sail-কে ডিফল্ট Devcontainer ইনস্টল করার নির্দেশ দিতে পারেন:

curl -s "https://laravel.build/example-app?with=mysql,redis&devcontainer" | bash

 

আইডিই সাপোর্ট (IDE Support)

লারাভেল অ্যাপ্লিকেশন ডেভেলপ করার সময় আপনি যেকোনো কোড এডিটর ব্যবহার করতে পারেন। তবে, PhpStorm  ব্যবহার করলে আপনি  Laravel Pint সহ লারাভেল ইকোসিস্টেমের নানাবিধ সুবিধা গ্রহণ করতে পারবেন ।

এছাড়া,  লারাভেল কমিউনিটি দ্বারা পরিচালিত PhpStorm এর  Laravel Idea  প্লাগইন ব্যবহার করলে বিদ্যমান সুবিধার সাথে আরও বেশ কিছু সুবিধা যোগ হবে। যেমন- code generation, Eloquent syntax completion, validation rule completion সহ আরও অনেক কিছু ।

 

পরবর্তী ধাপ (Next Steps)

ইতিমধ্যেই আপনি আপনার নিজের লারাভেল প্রজেক্টিটি তৈরির কাজ সম্পন্ন করেছেন। পরবর্তী ধাপে যেতে এখন আপনার  কী কী শেখা উচিৎ নিশ্চয় তা নিয়ে ভাবছেন। চিন্তা না করে পর্যায়ক্রমে নীচের টিউটোরিয়ালসমূহ পড়তে শুরু করুন, তাহলে আপনি খুব দ্রুত লারাভেলের কর্ম প্রক্রিয়ার সঙ্গে পরিচিত হয়ে উঠবেন।

আপনি লারাভেলকে কীভাবে আপনার প্রজেক্টে ব্যবহার করতে চান তা আপনার লারাভেল শিক্ষাসফরের পরবর্তী ধাপ এর উপর নির্ভর করছে। লারাভেল ব্যবহার করার বিভিন্ন উপায় আছে। তবে আমরা  আমাদের টিউটোরিয়ালে ল্যারাভেল ফ্রেমওয়ার্ক এর দুটি প্রাথমিক পদ্ধতি সম্বন্ধে আলোচনা করবো।

 

আপনি কি লারাভেলে নতুন? তাহলে হাতেকলমে লারাভেল শিখতে লারাভেল বুটক্যাম্প টিউটোরিয়ালটি দেখুন। 

 

লারাভেল ফুল স্ট্যাক ফ্রেমওয়ার্ক  (Laravel the Full Stack Framework)

লারাভেলকে আপনি ফুল স্ট্যাক ফ্রেমওয়ার্ক হিসাবেও ব্যবহার করতে পারেন। "ফুল স্ট্যাক" ফ্রেমওয়ার্ক দ্বারা আমরা এটি বুঝাতে চাচ্ছি যে,  আপনি আপনার অ্যাপ্লিকেশনের রাউট রিকুয়েস্ট এবং ফ্রন্টএন্ডে ব্লেড টেমপ্লেট বা Inertia এর  মতো হাইব্রিড প্রযুক্তির সিঙ্গেল পেইজ অ্যাপ্লিকেশন রেন্ডার করতে লারাভেল ব্যবহার করতে পারেন। আমাদের মতে লারাভেল ফ্রেমওয়ার্ক ব্যবহার এর এটিই সবচেয়ে সাধারণ এবং কার্যকর পদ্ধতি।

আপনি যদি এভাবেই লারাভেল ব্যবহার করার পরিকল্পনা করেন, তাহলে আপনি অফিসিয়াল ডকুমেন্টেশনের আলোকে ফ্রন্টএন্ড ডেভেলপমেন্ট, রাউটিং, ভিউ বা ইলোকুয়েন্ট ওআরএম- এর উপর আমাদের বাংলা টিউটোরিয়ালগুলো দেখতে পারেন। এছাড়াও, আপনি চাইলে Livewire এবং Inertia এর মত কমিউনিটি প্যাকেজ সম্পর্কেও জানতে পারেন। এই প্যাকেজগুলি দিয়ে আপনি লারাভেলকে ফুল-স্ট্যাক ফ্রেমওয়ার্ক হিসাবে ব্যবহার করতে পারবেন,  এছাড়াও সিঙ্গেল পেইজ জাভাস্ক্রিপ্ট অ্যাপ্লিকেশন কর্তৃক প্রদত্ত নানাবিধ UI সুবিধা উপভোগ করতে পারবেন৷

আপনি যদি ফুল স্ট্যাক ফ্রেমওয়ার্ক হিসাবে Laravel কে বেছে নেন, তবে আমরা আপনাকে Vite ব্যবহার করে আপনার অ্যাপ্লিকেশনের CSS এবং JavaScript  কম্পাইল করা শিখতে দৃঢ়ভাবে উৎসাহিত করছি।

 

আপনি যদি আপনার অ্যাপ্লিকেশন তৈরি করা শুরু করতে চান তবে লারাভেল এর  অফিসিয়াল অ্যাপ্লিকেশন স্টার্টার কিটগুলির একটি ব্যবহার করতে পারেন।

 

 ল্যারাভেল ব্যাকএন্ড (Laravel the API Backend)

লারাভেলকে জাভাস্ক্রিপ্ট সিঙ্গেল পেইজ(SPA) অ্যাপ্লিকেশন বা মোবাইল অ্যাপ্লিকেশনের API ব্যাকএন্ড হিসাবেও ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, আপনি আপনার Next.js অ্যাপ্লিকেশনের জন্য একটি API ব্যাকএন্ড হিসাবে Laravel ব্যবহার করতে পারেন। এক্ষেত্রে, আপনি আপনার অ্যাপ্লিকেশনের আথেন্টিকেশন এবং ডেটা স্টোরেজ / পুনরুদ্ধার করার জন্য লারাভেল ব্যবহার করতে পারেন। এছাড়াও লারাভেলের শক্তিশালী পরিষেবা যেমন queue, email, notification এবং  আরও অনেক কিছুর সুবিধা গ্রহণ করতে পারেন।

আপনি যদি এপিআই ব্যাকেন্ড হিসেবে লারাভেল ব্যবহার করতে চান, তাহলে আপনি আমাদের রাউটিং, লারাভেল স্যাঙ্কটাম এবং ইলোকুয়েন্ট ওআরএম ডকুমেন্টেশন দেখতে পারেন।

 

আপনি কি Laravel ব্যাকএন্ড এবং Next.js ফ্রন্টএন্ডে আপনার এপ্লিকেশন ডেভেলপ  করতে চান ?  তবে লারাভেল ব্রিজ ব্যবহার করে কয়েক মিনিটের মধ্যেই আপনি আপনার অ্যাপ্লিকেশন ডেভেলপ শুরু করতে পারেন। কেননা, এটি API স্ট্যাক  এবং Next.js ফ্রন্টএন্ড  অফার করে । 

Content added || updated By

লারাভেল কনফিগারেশন (Laravel Configuration)

লারাভেল কনফিগারেশন Laravel ফ্রেমওয়ার্কের মূল উপাদানগুলির মধ্যে একটি এবং এটি অ্যাপ্লিকেশন সেটিংস এবং চাহিদা অনুযায়ী কাস্টমাইজ করার সুযোগ দেয়। নিচে Laravel কনফিগারেশনের বিভিন্ন দিক নিয়ে বিস্তারিত আলোচনা করা হলো:

১. কনফিগারেশন ফাইল

Laravel-এর সমস্ত কনফিগারেশন ফাইলগুলি config/ ডিরেক্টরিতে অবস্থিত। প্রতিটি কনফিগারেশন ফাইল নির্দিষ্ট সিস্টেম বা ফিচারের জন্য ব্যবহার করা হয়। উদাহরণস্বরূপ:

  • app.php: অ্যাপ্লিকেশনের সাধারণ সেটিংস যেমন টাইমজোন, লোকেল, অ্যাপ্লিকেশনের নাম ইত্যাদি এখানে নির্ধারণ করা হয়।
  • database.php: ডাটাবেস সংক্রান্ত কনফিগারেশন যেমন ড্রাইভার, কানেকশন, এবং ডাটাবেসের ডিফল্ট সেটিংস।
  • mail.php: ইমেইল সংক্রান্ত কনফিগারেশন যেমন SMTP, API key ইত্যাদি।
  • queue.php: Queue সংক্রান্ত সেটিংস।

২. .env ফাইল

Laravel-এর প্রধান কনফিগারেশন ফাইল হলো .env। এই ফাইলটি পরিবেশ-নির্ভর কনফিগারেশন রাখতে ব্যবহার করা হয়। অ্যাপ্লিকেশন লোকাল, স্টেজিং বা প্রোডাকশন পরিবেশে চলে তার উপর ভিত্তি করে বিভিন্ন মান সেট করা যায়।

.env ফাইলে আপনি বিভিন্ন গুরুত্বপূর্ণ কনফিগারেশন রাখবেন, যেমন:

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:.....
APP_DEBUG=true
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

৩. কনফিগারেশন ক্যাশ

যেহেতু Laravel-এর কনফিগারেশন ফাইলগুলি অ্যাপ্লিকেশনের একাধিক ফিচারের উপর নির্ভর করে, তাই কনফিগারেশন ক্যাশ করার অপশন রয়েছে। এর ফলে অ্যাপ্লিকেশন আরও দ্রুত চলে। কনফিগারেশন ক্যাশ করার জন্য নিচের কমান্ডটি ব্যবহার করা হয়:

php artisan config:cache

ক্যাশ ক্লিয়ার করতে চাইলে:

php artisan config:clear

৪. কাস্টম কনফিগারেশন

Laravel আপনাকে আপনার নিজস্ব কনফিগারেশন ফাইল তৈরি করার সুযোগ দেয়। যদি আপনি কোনও নির্দিষ্ট কনফিগারেশন তৈরি করতে চান, তাহলে config/ ডিরেক্টরিতে একটি নতুন ফাইল তৈরি করে সেই ফাইলে আপনার কনফিগারেশন যুক্ত করতে পারেন।

 

// config/custom.php
return [
    'setting1' => 'value1',
    'setting2' => 'value2',
];

এরপর এই কনফিগারেশন অ্যাক্সেস করার জন্য:

$value = config('custom.setting1');

৫. পরিবেশ(env)ভিত্তিক কনফিগারেশন

Laravel আপনাকে পরিবেশভিত্তিক কনফিগারেশন ব্যবহারের সুযোগ দেয়। উদাহরণস্বরূপ, আপনি .env ফাইলে বিভিন্ন পরিবেশে ভিন্ন ভিন্ন ডেটা সেট করতে পারবেন।

  • local.env: লোকাল ডেভেলপমেন্টের জন্য
  • production.env: প্রোডাকশনের জন্য

Laravel স্বয়ংক্রিয়ভাবে .env ফাইলের ভিত্তিতে সঠিক পরিবেশে চালিত হয়।

৬. কনফিগারেশন মাইগ্রেশন

Laravel-এর কনফিগারেশনগুলো সহজে পরিবর্তন ও মাইগ্রেট করার সুবিধা দেয়। উদাহরণস্বরূপ, যদি আপনি প্রোডাকশনে নতুন ডাটাবেস বা সার্ভিস যোগ করেন, তবে .env ফাইলে পরিবর্তন করলেই কাজ হয়ে যায়।

৭. Laravel Herd কনফিগারেশন

Laravel Herd ইনস্টল ও কনফিগার করার জন্য কিছু বিশেষ সেটিংস প্রয়োজন হতে পারে, বিশেষ করে ম্যাক এবং উইন্ডোজ অপারেটিং সিস্টেমের ক্ষেত্রে। Laravel Herd সম্পর্কে বিস্তারিত কনফিগারেশন ধাপগুলো নিচের মতো হতে পারে:

ম্যাকে Laravel Herd ব্যবহারের জন্য PHP এবং অন্যান্য ডিপেন্ডেন্সি ইনস্টল করতে হয়। Laravel Herd সাধারণত স্বয়ংক্রিয়ভাবে এই ডিপেন্ডেন্সিগুলো ইনস্টল করে।

উইন্ডোজে Herd সেটআপ করার জন্য Windows Subsystem for Linux (WSL) প্রয়োজন হতে পারে।


Laravel কনফিগারেশন এত সহজ এবং কাস্টমাইজযোগ্য যে আপনি সহজেই আপনার অ্যাপ্লিকেশন অনুযায়ী সেটআপ এবং পরিচালনা করতে পারবেন।

 

Laravel-এর ডিরেক্টরি কনফিগারেশন হলো একটি গুরুত্বপূর্ণ অংশ, যা অ্যাপ্লিকেশনের বিভিন্ন ফোল্ডারের কাঠামো এবং ফাংশন নিয়ন্ত্রণ করে। নিচে Laravel-এর ডিরেক্টরি স্ট্রাকচার এবং এর প্রতিটি অংশের কাজ নিয়ে আলোচনা করা হলো:

Laravel ডিরেক্টরি স্ট্রাকচার

Laravel এর মূল ডিরেক্টরিগুলি নিম্নলিখিত:

├── app
├── bootstrap
├── config
├── database
├── public
├── resources
├── routes
├── storage
├── tests
└── vendor

১. app/ ডিরেক্টরি

app/ ডিরেক্টরি Laravel অ্যাপ্লিকেশনের মূল বিজনেস লজিকের জন্য ব্যবহার করা হয়। এখানে অ্যাপ্লিকেশনের কন্ট্রোলার, মডেল, সার্ভিস, এবং ইভেন্ট সংক্রান্ত কোড থাকে।

  • Console/: কনসোল কমান্ডসমূহ, যেমন Artisan কমান্ড।
  • Exceptions/: কাস্টম এক্সসেপশন হ্যান্ডলিং।
  • Http/: HTTP রিকোয়েস্ট, রাউটিং, কন্ট্রোলার, এবং মিডলওয়্যার।
    • Controllers/: অ্যাপ্লিকেশনের কন্ট্রোলার ফাইলগুলি এখানে থাকে।
    • Middleware/: HTTP রিকোয়েস্ট ফিল্টারিং মিডলওয়্যার।
  • Models/: Eloquent ORM মডেল, যা ডাটাবেসের সাথে সম্পর্কিত কাজ করে।
  • Providers/: সার্ভিস প্রোভাইডার, যা অ্যাপ্লিকেশনের বিভিন্ন সার্ভিস রেজিস্টার এবং বুট করার জন্য দায়ী।

২. bootstrap/ ডিরেক্টরি

এটি Laravel-এর বুটস্ট্র্যাপিং কাজ পরিচালনা করে। এখানে app.php ফাইল রয়েছে, যা অ্যাপ্লিকেশন চালু হওয়ার সময় প্রথমে রান হয়।

  • cache/: অ্যাপ্লিকেশনের অটোলোডার এবং কনফিগারেশন ক্যাশ।

৩. config/ ডিরেক্টরি

Laravel-এর সব কনফিগারেশন ফাইল এখানে থাকে। প্রতিটি কনফিগারেশন ফাইল অ্যাপ্লিকেশনের নির্দিষ্ট একটি দিক নিয়ন্ত্রণ করে। উদাহরণস্বরূপ:

  • app.php: সাধারণ অ্যাপ্লিকেশন সেটিংস।
  • database.php: ডাটাবেস কানেকশন এবং সেটআপ।
  • mail.php: মেইল সার্ভিসের সেটিংস।
  • queue.php: Queue সার্ভিসের কনফিগারেশন।

৪. database/ ডিরেক্টরি

Laravel ডাটাবেস সম্পর্কিত ফাইল এবং মাইগ্রেশন সংরক্ষণ করতে এই ডিরেক্টরি ব্যবহার করে।

  • factories/: মডেলের জন্য ফ্যাক্টরি সংজ্ঞা, যা টেস্টিং বা ডামি ডেটা তৈরিতে ব্যবহৃত হয়।
  • migrations/: ডাটাবেস টেবিল তৈরি ও মডিফাই করার জন্য মাইগ্রেশন ফাইল।
  • seeds/: ডাটাবেসে ডিফল্ট ডেটা সিড করার জন্য।

৫. public/ ডিরেক্টরি

Laravel-এর ফ্রন্ট-ফেসিং ফাইল যেমন index.php, যেখান থেকে সমস্ত রিকোয়েস্ট শুরু হয়। এছাড়াও এখানে CSS, JavaScript, এবং ছবি ইত্যাদি পাবলিক অ্যাসেট ফাইল থাকে।

  • index.php: এন্ট্রি পয়েন্ট, যেখানে সমস্ত HTTP রিকোয়েস্ট প্রসেস করা হয়।

৬. resources/ ডিরেক্টরি

এই ডিরেক্টরি সমস্ত ভিউ ফাইল, ভাষার ফাইল এবং অন্য টেমপ্লেট ফাইল রাখার জন্য ব্যবহৃত হয়।

  • views/: Blade টেমপ্লেট ফাইল। এই ফাইলগুলি Laravel-এর ভিউ লেয়ার হিসাবে কাজ করে।
  • lang/: লোকেলাইজেশন ফাইল, যা অ্যাপ্লিকেশনের ভাষাগত সমর্থন দেয়।
  • css/ এবং js/: স্ট্যাটিক অ্যাসেট ফাইল।

৭. routes/ ডিরেক্টরি

Laravel-এর সমস্ত রাউটিং সম্পর্কিত ফাইল এই ডিরেক্টরিতে থাকে।

  • web.php: ওয়েব ইন্টারফেসের জন্য রাউট।
  • api.php: API রাউটের জন্য।
  • console.php: কনসোল-ভিত্তিক রাউট।
  • channels.php: ব্রডকাস্টিং রাউট।

৮. storage/ ডিরেক্টরি

Laravel অ্যাপ্লিকেশনের ফাইল সিস্টেম যেমন লগস, ক্যাশ, সেশন এবং ফাইল আপলোড এখানে সংরক্ষণ করা হয়।

  • app/: অ্যাপ্লিকেশনের জন্য সংরক্ষিত ডেটা।
  • framework/: ক্যাশ ফাইল এবং সেশন সংরক্ষণ।
  • logs/: লগ ফাইল, যেখানে অ্যাপ্লিকেশনের কার্যকলাপ সংরক্ষিত থাকে।

৯. tests/ ডিরেক্টরি

Laravel-এর বিল্ট-ইন টেস্টিং সুবিধা রয়েছে, এবং সমস্ত টেস্ট ফাইল এখানে রাখা হয়। এখানে ইউনিট টেস্ট এবং ফিচার টেস্ট আলাদা আলাদা ফোল্ডারে রাখা হয়।

  • Feature/: ফিচার টেস্ট।
  • Unit/: ইউনিট টেস্ট।

১০. vendor/ ডিরেক্টরি

Composer-এর মাধ্যমে ইনস্টল করা সমস্ত প্যাকেজ এবং ডিপেন্ডেন্সি এখানে রাখা হয়।

ডিরেক্টরি কনফিগারেশন কাস্টমাইজেশন

Laravel আপনাকে কিছু ডিরেক্টরি যেমন storage এবং public এর লোকেশন কাস্টমাইজ করার সুযোগ দেয়। এটি পরিবর্তন করতে হলে bootstrap/app.php ফাইলে কনফিগারেশন পরিবর্তন করতে হবে।


Laravel-এর ডিরেক্টরি স্ট্রাকচার অত্যন্ত সুসংহত, যা ডেভেলপারদের কাজ সহজ করে এবং অ্যাপ্লিকেশন উন্নয়নের জন্য সঠিক পরিবেশ তৈরি করে।

 কনফিগারেশন সম্পর্কে আরও জানতে কনিগারেশন ব্লগটি পড়ুন। 

 

Content added || updated By

লারাভেল ডিরেক্টরি স্ট্রাকচার (Laravel Directory Structure)

Laravel-এর ডিরেক্টরি স্ট্রাকচার একটি ওয়েব অ্যাপ্লিকেশন তৈরি করার জন্য খুবই সুসংগঠিত এবং কাঠামোবদ্ধ। এখানে Laravel 11-এর ডিরেক্টরি স্ট্রাকচারের মূল অংশগুলো উল্লেখ করা হলো:

অর্থাৎ Laravel-এর ডিরেক্টরি স্ট্রাকচারটি একটি সংগঠিত এবং কার্যকরী ফরম্যাটে ডিজাইন করা হয়েছে, যা ডেভেলপারদের জন্য কাজ করা সহজ করে। এই স্ট্রাকচারটি বিভিন্ন ফাইল এবং ফোল্ডারকে তাদের ফাংশন অনুযায়ী শ্রেণীবদ্ধ করে, যাতে অ্যাপ্লিকেশনের বিভিন্ন অংশ সহজে পরিচালনা করা যায়।

 

Laravel Directory Structure

এখানে Laravel অ্যাপ্লিকেশন তৈরি করার পর যে ডিরেক্টরি স্ট্রাকচারটি পাওয়া যায় তা নিচে উল্লেখ করা হলো:

app/
   Console/
   Exceptions/
   Http/
       Controllers/
       Middleware/
   Models/
   Policies/
bootstrap/
   cache/
config/
database/
   factories/
   migrations/
   seeders/
public/
resources/
   css/
   js/
   views/
routes/
storage/
   app/
   framework/
   logs/
tests/
vendor/
.env
.artisan
composer.json
package.json
phpunit.xml
README.md

লারাভেল ডিরেক্টরি স্ট্রাকচার এর সংক্ষিপ্ত রুপ 

your-laravel-app/
│
├── app/                # অ্যাপ্লিকেশনের লজিক
├── bootstrap/          # অ্যাপ্লিকেশন শুরু করার ফাইল
├── config/             # কনফিগারেশন ফাইল
├── database/           # ডাটাবেসের মাইগ্রেশন, সিডার, ফ্যাক্টরি
├── public/             # পাবলিক ফাইল (CSS, JS, Images)
├── resources/          # ভিউ ফাইল, ভাষা ফাইল, অন্যান্য রিসোর্স
├── routes/             # রাউট কনফিগারেশন
├── storage/            # লগ, ক্যাশে, এবং অস্থায়ী ফাইল
├── tests/              # টেস্ট কেস
└── vendor/             # Composer প্যাকেজ

 

ডিরেক্টরি ও ফাইলের ব্যাখ্যা:

1. app/

এই ফোল্ডারটি অ্যাপ্লিকেশনের মূল লজিক ধারণ করে। এখানে মডেল, কন্ট্রোলার, মিডলওয়্যার এবং অন্যান্য ক্লাস থাকে।

  • Console/: Artisan কমান্ড সংরক্ষণ করে।
  • Exceptions/: কাস্টম এক্সেপশন হ্যান্ডলিং সংরক্ষণ করে।
  • Http/: HTTP সম্পর্কিত কোড (Controllers, Middleware, Requests) থাকে।
  • Models/: ডাটাবেস মডেলগুলি সংরক্ষণ করে।
  • Providers/: সার্ভিস প্রোভাইডারগুলি সংরক্ষণ করে, যা অ্যাপ্লিকেশন শুরু করার সময় বিভিন্ন সার্ভিস রেজিস্টার করে।

2. bootstrap/

এটি অ্যাপ্লিকেশন শুরু করার জন্য প্রয়োজনীয় ফাইল ধারণ করে। app.php ফাইলটি এখানে থাকে, যা অ্যাপ্লিকেশনকে লোড এবং কনফিগার করতে ব্যবহৃত হয়।

3. config/

অ্যাপ্লিকেশনের কনফিগারেশন ফাইলগুলি এখানে থাকে, যা বিভিন্ন সেটিংস এবং কনফিগারেশন মান ধারণ করে।

4. database/

এই ফোল্ডারে ডাটাবেস মাইগ্রেশন, সিডার এবং ফ্যাক্টরি ফাইল থাকে। মাইগ্রেশনগুলো ডাটাবেস স্কিমা পরিবর্তন করার জন্য ব্যবহৃত হয়।

5. public/

এটি অ্যাপ্লিকেশনের পাবলিক ফাইলগুলি ধারণ করে, যেমন CSS, JavaScript, এবং ইমেজ। এটি লারাভেল অ্যাপ্লিকেশনের এন্ট্রি পয়েন্ট।

6. resources/

এখানে ভিউ ফাইল, ভাষা ফাইল এবং অন্যান্য রিসোর্স থাকে। Blade টেমপ্লেট এবং স্থানীয়করণ(Localization) ফাইলগুলোও এই ফোল্ডারে রয়েছে।

7. routes/

অ্যাপ্লিকেশনের রাউট কনফিগারেশন ফাইলগুলো এখানে থাকে। প্রতিটি রাউট অ্যাপ্লিকেশনের URL এবং তার সাথে সম্পর্কিত কন্ট্রোলার সংযুক্ত করে।

8. storage/

লগ, ক্যাশে, সেশন এবং অস্থায়ী ফাইল সংরক্ষণ করে। এটি তিনটি সাব-ডিরেক্টরি ধারণ করে:

  • app/: অ্যাপ্লিকেশনের ফাইল সঞ্চয় করে।
  • framework/: ফ্রেমওয়ার্কের জন্য প্রয়োজনীয় ক্যাশে এবং সেশন ফাইল।
  • logs/: লগ ফাইলগুলি এখানে থাকে।

9. tests/

অ্যাপ্লিকেশনের টেস্ট কেস সংরক্ষণ করা হয়। এখানে PHPUnit টেস্ট ফাইলগুলো থাকে।

10. vendor/

Composer দ্বারা ইনস্টল করা সমস্ত প্যাকেজ সংরক্ষণ করে। এটি আপনার অ্যাপ্লিকেশনের জন্য ব্যবহৃত তৃতীয় পক্ষের লাইব্রেরি ধারণ করে।

উপসংহার

Laravel-এর ডিরেক্টরি স্ট্রাকচারটি একটি শক্তিশালী এবং কার্যকরী ভিত্তি প্রদান করে, যা ডেভেলপারদের জন্য কোড সংরক্ষণ, পরিচালনা এবং উন্নয়ন প্রক্রিয়াকে সহজ করে। এই সংগঠিত স্ট্রাকচারটি বড় এবং জটিল অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে এবং অ্যাপ্লিকেশনের বিভিন্ন অংশকে পৃথক করে রাখে, যাতে কোডটি আরও রক্ষণাবেক্ষণযোগ্য হয়।

 

The App Directory Structure

Laravel 11-এর App Directory হল অ্যাপ্লিকেশনের প্রধান অংশ, যেখানে সমস্ত ব্যবসায়িক(Business) লজিক, কন্ট্রোলার, মডেল এবং অন্যান্য গুরুত্বপূর্ণ উপাদান রাখা হয়। এই ডিরেক্টরির বিভিন্ন অংশ এবং তাদের উদ্দেশ্য সম্পর্কে বিস্তারিত জানানো হলো:

app/
├── Console/
├── Exceptions/
├── Http/
│   ├── Controllers/
│   ├── Middleware/
│   └── Requests/
├── Models/
├── Policies/
└── Providers/

 

১. Console/

এই ফোল্ডারটি Laravel-এর Artisan কমান্ড তৈরি করার জন্য ব্যবহৃত হয়। আপনি যদি কাস্টম Artisan কমান্ড তৈরি করতে চান, তবে আপনার কোড এখানে থাকবে।

উদাহরণ:

namespace App\Console\Commands;
use Illuminate\Console\Command;
class ExampleCommand extends Command
{
   protected $signature = 'example:command';
   protected $description = 'Example command description';
   public function handle()
   {
       // Command logic
   }
}

 

২. Exceptions/

এখানে কাস্টম এক্সেপশন হ্যান্ডলার এবং অন্যান্য ত্রুটির ক্লাস থাকে। Laravel-এর Handler ক্লাসটি এখানে থাকে, যা অ্যাপ্লিকেশনকে ত্রুটিগুলি পরিচালনা করতে সাহায্য করে।

উদাহরণ:

namespace App\Exceptions;
use Exception;
class CustomException extends Exception
{
   // Custom logic for handling exceptions
}

 

৩. Http/

এই ডিরেক্টরির মধ্যে HTTP সম্পর্কিত কোডগুলো সংরক্ষিত হয়:

Controllers/: এখানে অ্যাপ্লিকেশনের কন্ট্রোলার ক্লাসগুলো থাকে। কন্ট্রোলারগুলি রিকুয়েস্ট এবং রেসপন্স পরিচালনা করে এবং মডেল ও ভিউ-এর মধ্যে সমন্বয় সাধন করে।

উদাহরণ:

namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
   public function index()
   {
       $users = User::all();
       return view('users.index', compact('users'));
   }
}

 

Middleware/: মিডলওয়্যার হলো অ্যাপ্লিকেশনের রিকুয়েস্ট এবং রেসপন্সের মধ্যে একটি প্রক্রিয়া। এটি সাধারণত রিকুয়েস্টের আগে বা পরে কিছু নির্দিষ্ট কাজ সম্পাদন করে।

উদাহরণ:

namespace App\Http\Middleware;
use Closure;
class CheckAge
{
   public function handle($request, Closure $next)
   {
       if ($request->age < 18) {
           return redirect('home');
       }
       return $next($request);
   }
}

 

Requests/: এই ফোল্ডারে কাস্টম রিকুয়েস্ট ভ্যালিডেশন ক্লাসগুলো থাকে, যা ইনপুট ডাটা যাচাই করার জন্য ব্যবহৃত হয়।

উদাহরণ:

namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreUserRequest extends FormRequest
{
   public function rules()
   {
       return [
           'name' => 'required|string|max:255',
           'email' => 'required|string|email|max:255|unique:users',
           'password' => 'required|string|min:8|confirmed',
       ];
   }
}

 

৪. Models/

মডেলগুলি ডাটাবেস টেবিলের প্রতিনিধিত্ব করে এবং সেই টেবিলের সাথে সম্পর্কিত কার্যক্রম (CRUD) পরিচালনা করে। মডেলগুলি ডেটা ম্যানিপুলেশন এবং ব্যবসায়িক(Business) লজিক পরিচালনা করার জন্য ব্যবহৃত হয়।

উদাহরণ:

namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
   protected $fillable = ['name', 'email', 'password'];
}

 

৫. Policies/

পলিসি ক্লাসগুলো অ্যাক্সেস কন্ট্রোলের জন্য ব্যবহৃত হয়। এটি নির্ধারণ করে যে ইউজার একটি নির্দিষ্ট রিসোর্সে প্রবেশের অনুমতি পাবে কিনা।

উদাহরণ:

namespace App\Policies;
use App\Models\User;
use App\Models\Post;
class PostPolicy
{
   public function update(User $user, Post $post)
   {
       return $user->id === $post->user_id;
   }
}

 

৬. Providers/

সার্ভিস প্রোভাইডারগুলি অ্যাপ্লিকেশন শুরু করার সময় বিভিন্ন সার্ভিস এবং কনফিগারেশন রেজিস্টার করে। এটি Laravel অ্যাপ্লিকেশনটির হৃদয়(herat), যেখানে সার্ভিসগুলোকে প্যাকেজের মাধ্যমে এবং কাস্টম কনফিগারেশন দিয়ে রেজিস্টার করা হয়।

উদাহরণ:

namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
   public function register()
   {
       // Register services
   }
   public function boot()
   {
       // Bootstrap services
   }
}

উপসংহার

Laravel 11-এর App Directory হলো অ্যাপ্লিকেশনের কেন্দ্রবিন্দু, যেখানে ব্যবসায়িক লজিক, ডাটাবেস মডেল, কন্ট্রোলার, মিডলওয়্যার এবং পলিসি ক্লাসগুলো রাখা হয়। এই সংগঠিত স্ট্রাকচার ডেভেলপারদের জন্য অ্যাপ্লিকেশন তৈরি এবং রক্ষণাবেক্ষণ সহজ করে, এবং এটি বড় এবং জটিল অ্যাপ্লিকেশনগুলোর জন্য একটি  পরিচ্ছন্ন ও সুসংহত কোডবেস নিশ্চিত করে।

ডিরেক্টরি স্ট্রাকচার সম্পর্কে আরও জানতে ডিরকেটরি স্ট্রাকচার ব্লগটি পড়ুন। 


 

Content added || updated By

লারাভেল ফ্রন্টএন্ড (Laravel Frontend)

Laravel একটি পূর্ণাঙ্গ PHP framework যা মূলত ব্যাকেন্ড ডেভেলপমেন্টের জন্য ব্যবহার করা হয়। তবে, Laravel-এর মাধ্যমে ফ্রন্টেন্ড ডেভেলপমেন্টও সহজভাবে করা যায়। এখানে Laravel ফ্রন্টেন্ড সম্পর্কিত বিভিন্ন টপিক নিয়ে বিস্তারিত আলোচনা করা হলো:

১. Laravel Frontend Introduction

Laravel মূলত ব্যাকএন্ড ডেভেলপমেন্টের জন্য জনপ্রিয় হলেও, এটি ফ্রন্টেন্ড ডেভেলপমেন্টের জন্যও বেশ কিছু সমাধান সরবরাহ করে। Laravel ফ্রেমওয়ার্কটি Vue.js, React, এবং Blade টেমপ্লেট ইঞ্জিনের সাথে ভালোভাবে ইন্টিগ্রেট করা যায়, যা ফ্রন্টেন্ড ডেভেলপমেন্টকে আরও সহজ করে তোলে।

২. Using PHP in Frontend

Laravel এর Blade টেমপ্লেট ইঞ্জিন ব্যবহার করে সরাসরি PHP কোড HTML-এর মধ্যে ব্যবহার করা যায়। Blade-এর মাধ্যমে আপনি ডাইনামিক কন্টেন্ট সহজে প্রদর্শন করতে পারেন। উদাহরণ:

Hello, {{ $name }}

এটি সরাসরি PHP ব্যবহার করার তুলনায় অনেক বেশি সহজ এবং পড়তে সুবিধাজনক।

৩. PHP and Blade

Blade হল Laravel-এর নিজস্ব টেমপ্লেট ইঞ্জিন। এটি HTML-এর সাথে PHP কোড মেশানোর সহজ এবং পরিষ্কার উপায় সরবরাহ করে। Blade-এর মাধ্যমে আপনি কন্ডিশনাল, লুপ, এবং অন্যান্য লজিক প্রয়োগ করতে পারেন। উদাহরণ:

@if($user->isAdmin())
    

Welcome, admin!

@else

Welcome, user!

@endif

Blade টেমপ্লেট ইঞ্জিনটি কনটেক্সুয়াল আউটপুট নিরাপত্তা দেয়, যা XSS অ্যাটাক প্রতিরোধ করে।

৪. Livewire

Livewire হল একটি Laravel প্যাকেজ যা Blade এর সাথে কম্পোনেন্ট-বেজড আর্কিটেকচার সরবরাহ করে। এটি আপনাকে Vue.js বা React-এর মতো JavaScript ফ্রেমওয়ার্ক ছাড়াই ইন্টারেকটিভ ইউজার ইন্টারফেস তৈরি করতে সাহায্য করে। Livewire ব্যবহার করে আপনি AJAX রিকোয়েস্ট পরিচালনা করতে এবং ব্যাকএন্ডের সাথে সরাসরি যোগাযোগ করতে পারেন। উদাহরণ:

class Counter extends \Livewire\Component
{
    public $count = 0;

    public function increment()
    {
        $this->count++;
    }

    public function render()
    {
        return view('livewire.counter');
    }
}

৫. Starter Kits

Laravel-এর স্টার্টার কিটগুলো দ্রুত শুরু করার জন্য প্রি-বিল্ট প্যাকেজ প্রদান করে। Laravel Jetstream এবং Breeze দুইটি প্রধান স্টার্টার কিট। Jetstream অনেক বেশি ফিচার-সমৃদ্ধ এবং SPA সমর্থন করে (Livewire বা Inertia দিয়ে), আর Breeze হালকা এবং সহজ ফ্রন্টেন্ড স্ট্রাকচার প্রদান করে।

  • Jetstream: সম্পূর্ণ ইউজার অথেনটিকেশন সিস্টেম, টিম ম্যানেজমেন্ট, এবং API ফিচারসহ আসে।
  • Breeze: সরল অথেনটিকেশন সিস্টেম এবং Blade-ভিত্তিক ফ্রন্টেন্ড প্রদান করে।

৬. Using Vue / React

Laravel সরাসরি Vue.js এবং React এর সাথে ইন্টিগ্রেট করতে পারে। Laravel Mix (Webpack wrapper) ব্যবহার করে আপনি সহজে আপনার Vue.js বা React কম্পোনেন্ট তৈরি এবং কম্পাইল করতে পারেন।

Vue.js ব্যবহারের একটি উদাহরণ:




React ব্যবহার করার ক্ষেত্রেও আপনি একইভাবে React কম্পোনেন্ট তৈরি এবং লোড করতে পারবেন।

৭. Inertia.js

Inertia.js হল একটি নতুন ধরনের স্ট্যাক, যা Laravel এবং Vue.js/React এর মধ্যে কাজ করে। Inertia সরাসরি API তৈরি করার পরিবর্তে সম্পূর্ণ পেজ লোড করতে সাহায্য করে। এটি Vue.js/React কে ব্যাকএন্ড হিসেবে Laravel ব্যবহার করার মাধ্যমে একটি সহজ ও কার্যকর SPA তৈরি করে।

// Example route using Inertia
Route::get('/dashboard', function () {
    return Inertia::render('Dashboard', [
        'users' => User::all(),
    ]);
});

৮. Bundling Assets

Laravel Mix ব্যবহার করে আপনি আপনার CSS এবং JavaScript ফাইলগুলোকে সহজেই কম্পাইল এবং অপ্টিমাইজ করতে পারবেন। এটি Webpack-এর জন্য একটি সরল আবরণ সরবরাহ করে। Laravel Mix এর মাধ্যমে আপনি SASS, LESS, PostCSS, Vue, React এর মতো মডিউলগুলো সহজেই হ্যান্ডেল করতে পারবেন।

উদাহরণ হিসেবে আপনার webpack.mix.js ফাইলটি দেখতে এমন হতে পারে:

const mix = require('laravel-mix');

mix.js('resources/js/app.js', 'public/js')
    .sass('resources/sass/app.scss', 'public/css');

এখন আপনি npm run dev বা npm run production কমান্ডের মাধ্যমে আপনার অ্যাসেট ফাইলগুলো কম্পাইল করতে পারবেন।


এই প্রতিটি টপিক Laravel ফ্রন্টেন্ড ডেভেলপমেন্টের জন্য গুরুত্বপূর্ণ এবং আপনি আপনার প্রজেক্টের প্রয়োজন অনুযায়ী এগুলো ব্যবহার করতে পারেন।

 

Content added || updated By

লারাভেল স্টারটার কিট (Laravel Starter Kit)

Laravel Starter Kits হলো Laravel-এর জন্য প্রি-বিল্ট প্রজেক্ট টেমপ্লেট বা কনফিগারেশন, যা সাধারণত অ্যাপ্লিকেশনের জন্য প্রাথমিক সেটআপ এবং প্রয়োজনীয় ফিচারগুলো নিয়ে আসে। Laravel-এ দুটি প্রধান স্টার্টার কিট আছে: Laravel Breeze এবং Laravel Jetstream। এই স্টার্টার কিটগুলো আপনাকে সহজে অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে, যেগুলোর মধ্যে প্রয়োজনীয় অথেন্টিকেশন সিস্টেম, প্রোফাইল ম্যানেজমেন্ট, টিম ম্যানেজমেন্ট ইত্যাদি অন্তর্ভুক্ত থাকে।


Laravel Breeze

Laravel Breeze হলো একটি সহজ অথেনটিকেশন স্টার্টার কিট যা লগইন, রেজিস্ট্রেশন, পাসওয়ার্ড রিসেট এবং ইমেইল ভেরিফিকেশনের মতো বেসিক অথেনটিকেশন ফিচার সরবরাহ করে। এটি Blade, Tailwind CSS, এবং Alpine.js-এর উপরে তৈরি করা হয়েছে এবং অ্যাপ্লিকেশনের জন্য একটি সাধারণ এবং পরিচ্ছন্ন UI প্রদান করে। ছোট এবং মাঝারি আকারের প্রজেক্টের জন্য এটি আদর্শ।

Breeze এর বৈশিষ্ট্যসমূহ:

  • বেসিক অথেনটিকেশন সিস্টেম।
  • Blade টেমপ্লেটিং এবং Tailwind CSS এর সমন্বয়ে সহজ UI।
  • খুব দ্রুত সেটআপ এবং কাস্টমাইজেশন।
  • Livewire, React, Vue এবং API ভিত্তিক ফ্রন্টএন্ডের জন্য সমর্থন।

Installation

Laravel Breeze ইনস্টল করার জন্য নিম্নলিখিত ধাপগুলি অনুসরণ করতে হবে:

প্রথমে একটি নতুন Laravel প্রজেক্ট তৈরি করুন:

composer create-project laravel/laravel myproject

এরপর Breeze প্যাকেজটি ইন্সটল করুন:

composer require laravel/breeze --dev

এরপর Laravel Breeze সেটআপ করুন:

php artisan breeze:install

ইনস্টলেশন সম্পন্ন হলে dependencies এবং assets compile করতে:

npm install
npm run dev

এরপর ডাটাবেস মাইগ্রেশন চালান:

php artisan migrate

Breeze and Blade

Blade হল Laravel-এর ডিফল্ট টেমপ্লেট ইঞ্জিন, যা Laravel Breeze দ্বারা ব্যবহৃত হয়। Blade দিয়ে তৈরি UI খুব সহজ, যা Tailwind CSS দিয়ে স্টাইল করা হয়েছে। ছোট বা সাধারণ Laravel প্রজেক্টের জন্য Blade ভিত্তিক Breeze খুবই কার্যকর।

Blade এবং Breeze ইন্সটল করতে:

php artisan breeze:install

Breeze and Livewire

Livewire হল Laravel এর জন্য একটি ফ্রন্টএন্ড ফ্রেমওয়ার্ক, যা আপনাকে Blade কম্পোনেন্ট ব্যবহার করে ইন্টারেক্টিভ UI তৈরি করতে সাহায্য করে। আপনি JavaScript লিখা ছাড়াই Ajax অনুরোধ পাঠাতে এবং ডাটা হ্যান্ডেল করতে পারবেন। Laravel Breeze-এ Livewire ব্যবহার করলে আপনি ফ্রন্টএন্ডে Blade ব্যবহার করে রিয়েল-টাইম ইন্টারেকশন যুক্ত করতে পারবেন।

Livewire এর সাথে Breeze ইন্সটল করতে:

php artisan breeze:install livewire

Breeze and React / Vue

Laravel Breeze React.js এবং Vue.js উভয়ের জন্যই সাপোর্ট করে, যাতে আপনি ক্লায়েন্ট-সাইডে আরও ইন্টারেক্টিভ এবং ডাইনামিক ফ্রন্টএন্ড তৈরি করতে পারেন। React এবং Vue দুটি আধুনিক JavaScript ফ্রেমওয়ার্ক যা আপনাকে উন্নত ফ্রন্টএন্ড তৈরি করতে সাহায্য করে।

React.js বা Vue.js ব্যবহার করতে:

php artisan breeze:install react

অথবা

php artisan breeze:install vue

Breeze and Next.js / API

Laravel Breeze Next.js সাপোর্ট করে, যা একটি আধুনিক ফ্রন্টএন্ড ফ্রেমওয়ার্ক। আপনি যদি Laravel-কে ব্যাকএন্ড এবং Next.js-কে ফ্রন্টএন্ড হিসেবে ব্যবহার করতে চান, তবে Breeze এর মাধ্যমে API ভিত্তিক অথেনটিকেশন সিস্টেম তৈরি করা যায়। এই পদ্ধতিতে আপনার ব্যাকএন্ড Laravel API এবং ফ্রন্টএন্ড Next.js দিয়ে আলাদাভাবে পরিচালিত হবে।

API ভিত্তিক ইন্সটলেশন:

php artisan breeze:install api

Laravel Jetstream

Laravel Jetstream হল একটি আরও উন্নত অথেনটিকেশন স্টার্টার কিট, যা Laravel Breeze-এর তুলনায় আরও অনেক ফিচার সরবরাহ করে। Jetstream Team ম্যানেজমেন্ট, টু-ফ্যাক্টর অথেনটিকেশন, সেশন ম্যানেজমেন্ট, এবং API সাপোর্ট সহ উন্নত ফিচার সরবরাহ করে। এটি Blade ভিত্তিক Livewire অথবা Vue.js ভিত্তিক Inertia.js দিয়ে কাজ করে।

Jetstream বৈশিষ্ট্যসমূহ:

  • টিম ম্যানেজমেন্ট।
  • টু-ফ্যাক্টর অথেনটিকেশন (2FA)।
  • সেশন ম্যানেজমেন্ট।
  • প্রোফাইল ম্যানেজমেন্ট।
  • API টোকেন ম্যানেজমেন্ট।

Jetstream আপনাকে এমন অ্যাপ্লিকেশন তৈরি করতে দেয় যেখানে বহুমুখী অথেনটিকেশন এবং টিম ম্যানেজমেন্টের প্রয়োজনীয়তা থাকে।

Jetstream ইন্সটল করতে:

composer require laravel/jetstream

এরপর আপনি Livewire বা Inertia.js স্ট্যাক ব্যবহার করতে পারবেন:

Livewire স্ট্যাক:

php artisan jetstream:install livewire

Inertia.js স্ট্যাক:

php artisan jetstream:install inertia

উপসংহার

Laravel Breeze এবং Jetstream উভয়ই Laravel-এর শক্তিশালী Starter Kits, যা আপনাকে দ্রুত অথেনটিকেশন এবং ব্যবহারকারী ম্যানেজমেন্ট সিস্টেম সেটআপ করতে সাহায্য করে। ছোট এবং সহজ প্রকল্পগুলির জন্য Laravel Breeze আদর্শ, যেখানে Laravel Jetstream বড় এবং জটিল অ্যাপ্লিকেশনের জন্য উন্নত ফিচার সরবরাহ করে।

Content added By

লারাভেল ডেপ্লয়মেন্ট (Laravel Deployment)

আপনি যখন আপনার Laravel অ্যাপ্লিকেশনকে Production Server এ deployment করবেন, তখন আপনার অ্যাপ্লিকেশনটি যতটা সম্ভব দক্ষতার সাথে চলছে কিনা তা নিশ্চিত করতে আপনাকে কিছু গুরুত্বপূর্ণ  বিষয়ের প্রতি বিশেষ দৃষ্টি দিতে হবে। 


Laravel Deployment: একটি বিস্তারিত গাইড

Laravel অ্যাপ্লিকেশনকে উৎপাদন(production) পরিবেশে ডেপ্লয় করার জন্য কিছু নির্দিষ্ট ধাপ ও কনফিগারেশন প্রয়োজন হয়। সঠিকভাবে ডেপ্লয় করলে আপনার অ্যাপ্লিকেশন দ্রুত, নিরাপদ এবং নির্ভরযোগ্য হবে। এখানে Laravel ডেপ্লয়মেন্ট প্রক্রিয়া সম্পর্কে একটি বিস্তারিত নির্দেশিকা দেওয়া হলো।

1. পরিচিতি (Introduction)

ডেভেলপমেন্ট এবং ডেপ্লয়মেন্টের জন্য Laravel  একটি অত্যন্ত জনপ্রিয় PHP ফ্রেমওয়ার্ক। উৎপাদন পরিবেশে ডেপ্লয় করার সময়, সার্ভারের সঠিক কনফিগারেশন এবং অপ্টিমাইজেশনের বিষয়গুলো অত্যন্ত গুরুত্বপূর্ণ।


2. সার্ভার প্রয়োজনীয়তা (Server Requirements)

Laravel চালানোর জন্য আপনার সার্ভারে নিম্নলিখিত সিস্টেমের উপাদানগুলো থাকা প্রয়োজন:

PHP >= 8.2
Ctype PHP Extension
cURL PHP Extension
DOM PHP Extension
Fileinfo PHP Extension
Filter PHP Extension
Hash PHP Extension
Mbstring PHP Extension
OpenSSL PHP Extension
PCRE PHP Extension
PDO PHP Extension
Session PHP Extension
Tokenizer PHP Extension
XML PHP Extension

3. সার্ভার কনফিগারেশন (Server Configuration)

3.1 Nginx

যদি আপনি এমন একটি সার্ভারে আপনার অ্যাপ্লিকেশন হোস্ট করতে চান যেখানে Nginx চালু আছে, তাহলে ওয়েব সার্ভার কনফিগার করতে নিচের কনফিগারেশন ফাইলটি প্রাথমিকভাবে ব্যবহার করতে পারেন। তবে, আপনার সার্ভারের নির্দিষ্ট সেটআপ অনুযায়ী ফাইলটি কিছুটা পরিবর্তন করা লাগতে পারে। যদি সার্ভার পরিচালনা করতে সহায়তার প্রয়োজন হয়, তাহলে Laravel Forge-এর মতো Laravel-এর অফিসিয়াল সার্ভার ম্যানেজমেন্ট এবং ডেপ্লয়মেন্ট সেবা ব্যবহার করার কথা চিন্তা করতে পারেন।

এটা নিশ্চিত করুন যে, নিচের কনফিগারেশনের মতো আপনার ওয়েব সার্ভার সমস্ত রিকোয়েস্টকে অ্যাপ্লিকেশনের  public/index.php ফাইলে পাঠায়। কখনই index.php ফাইলটিকে আপনার প্রজেক্টের মূল ডিরেক্টরিতে সরানোর চেষ্টা করবেন না, কারণ এতে করে অ্যাপ্লিকেশনের অনেক গুরুত্বপূর্ণ কনফিগারেশন ফাইল ইন্টারনেটে প্রকাশিত হয়ে যেতে পারে।

Nginx একটি হালকা ও উচ্চ-দক্ষতাসম্পন্ন ওয়েব সার্ভার যা Laravel অ্যাপ্লিকেশন চালানোর জন্য উপযুক্ত। একটি সাধারণ Nginx কনফিগারেশন নিচে দেওয়া হলো:

server {
    listen 80;
    listen [::]:80;
    server_name example.com;
    root /srv/example.com/public;
 
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
 
    index index.php;
 
    charset utf-8;
 
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
 
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }
 
    error_page 404 /index.php;
 
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
 
    location ~ /\.(?!well-known).* {
        deny all;
    }
}

এই Nginx কনফিগারেশন একটি লারাভেল অ্যাপ্লিকেশন সার্ভ করতে ব্যবহৃত হয়। এখানে প্রতিটি অংশের ব্যাখ্যা দেওয়া হলো:

  • Listen: listen 80; এবং listen [::]:80; নির্দেশনা IPv4 ও IPv6 উভয়ের জন্য পোর্ট 80-এ সংযোগ গ্রহণ করবে।
  • Server Name & Root: ডোমেইনের জন্য server_name example.com; এবং Laravel এর public ডিরেক্টরির জন্য root /srv/example.com/public;
  • Security Headers: X-Frame-Options এবং X-Content-Type-Options হেডারগুলো সিকিউরিটি বাড়াতে যুক্ত করা হয়েছে।
  • Main Block: try_files Laravel এর রাউটিং সিস্টেম অনুযায়ী ফাইল বা URL রিডাইরেক্ট করে।
  • PHP Processing: .php ফাইলগুলো php8.2-fpm.sock মাধ্যমে প্রসেস করা হয়।
  • Security: .well-known ব্যতীত সকল হিডেন ফাইল অ্যাক্সেস বন্ধ থাকে।

এটি Laravel অ্যাপ্লিকেশনটি সুরক্ষিতভাবে সার্ভ করতে সাহায্য করে।

 

3.2 FrankenPHP

FrankenPHP একটি নতুন PHP-সার্ভার যা Laravel এবং অন্যান্য ওয়েব অ্যাপ্লিকেশনগুলিকে দ্রুততার সঙ্গে চালাতে সাহায্য করে। এটি WebSockets সমর্থন করে, যা রিয়েল-টাইম অ্যাপ্লিকেশনের জন্য বিশেষভাবে কার্যকর।

এটি PHP, Nginx, এবং অন্যান্য ওয়েব টেকনোলজির মধ্যে একটি সেতুবন্ধন তৈরি করে, যা আপনার অ্যাপ্লিকেশনকে উন্নত পারফরম্যান্স এবং স্কেলেবিলিটি প্রদান করে।

প্রধান বৈশিষ্ট্য:

  • সার্ভার র‍্যাপার: এটি Nginx-এর সঙ্গে PHP-এর মধ্যে যোগাযোগের জন্য একটি সহজ এবং দ্রুত উপায় প্রদান করে।
  • এ্যাসিঙ্ক্রোনাস প্রসেসিং: একাধিক কাজের জন্য নন-ব্লকিং এ্যাসিঙ্ক্রোনাস ফিচার, যা পারফরম্যান্স বাড়ায়।
  • সহজ কনফিগারেশন: ব্যবহারকারী বান্ধব কনফিগারেশন ফাইল, যা সেটআপ করা সহজ।
  • মডিউলার আর্কিটেকচার: বিভিন্ন প্রয়োজন অনুসারে আপনার অ্যাপ্লিকেশনকে কাস্টমাইজ করার সুবিধা।
  • এপিআই সাপোর্ট: RESTful API তৈরি করা সহজ।

ব্যবহার শুরু করা:

  • ইনস্টলেশন: আপনার সিস্টেমে FrankenPHP ইনস্টল করতে হবে। ডকুমেন্টেশনে বিস্তারিত পদক্ষেপ দেয়া হয়েছে।
  • কনফিগারেশন: আপনি আপনার Nginx সার্ভারে FrankenPHP কনফিগার করতে পারেন, যাতে আপনার PHP স্ক্রিপ্টগুলো সঠিকভাবে সার্ভ হয়।
  • অ্যাপ্লিকেশন ডেভেলপমেন্ট: এরপর আপনি আপনার PHP অ্যাপ্লিকেশন তৈরি করতে শুরু করতে পারেন, আধুনিক ফিচারগুলোর সুবিধা নিয়ে।

FrankenPHP ব্যবহার করার ফলে আপনার PHP অ্যাপ্লিকেশনগুলো হবে দ্রুততর এবং আরও কার্যকর।


4. ডিরেক্টরি অনুমতিসমূহ (Directory Permissions)

Laravel অ্যাপ্লিকেশন সঠিকভাবে কাজ করার জন্য কিছু ডিরেক্টরিতে লেখার অনুমতি থাকতে হবে। প্রধানত, storage এবং bootstrap/cache ডিরেক্টরিগুলিতে লেখার অধিকার প্রদান করতে হবে।

sudo chown -R www-data:www-data /path/to/your/laravel/storage
sudo chown -R www-data:www-data /path/to/your/laravel/bootstrap/cache

5. অপ্টিমাইজেশন (Optimization)

5.1 ক্যাশিং কনফিগারেশন (Caching Configuration)

উৎপাদন পরিবেশে আপনার অ্যাপ্লিকেশন দ্রুত চালানোর জন্য কনফিগারেশন ক্যাশ করা উচিত:

php artisan config:cache

5.2 ইভেন্ট ক্যাশিং (Caching Events)

Laravel ইভেন্টস ক্যাশ করে অ্যাপ্লিকেশন কর্মক্ষমতা বাড়ানো সম্ভব:

php artisan event:cache

5.3 রুট ক্যাশিং (Caching Routes)

রাউটিং সিস্টেমের কার্যকারিতা উন্নত করতে আপনি রুট ক্যাশ করতে পারেন:

php artisan route:cache

5.4 ভিউ ক্যাশিং (Caching Views)

ভিউ ফাইলগুলিকে ক্যাশ করতে নিচের কমান্ডটি চালান:

php artisan view:cache

6. ডিবাগ মোড (Debug Mode)

Laravel অ্যাপ্লিকেশন উৎপাদন পরিবেশে ডেপ্লয় করার সময় APP_DEBUG অপশনটি .env ফাইলে false করতে হবে, যাতে আপনার অ্যাপ্লিকেশনের ত্রুটিগুলি প্রকাশ না হয়:

APP_DEBUG=false

7. Health Route

Laravel অ্যাপ্লিকেশনের একটি সাধারণ "health check" রুট সেটআপ করে সার্ভারের অবস্থা পর্যালোচনা করতে পারেন। উদাহরণস্বরূপ:

Route::get('/health', function () {
    return response()->json(['status' => 'ok']);
});

8. সহজ ডেপ্লয়মেন্ট Forge / Vapor এর মাধ্যমে (Easy Deployment With Forge / Vapor)

Laravel অ্যাপ্লিকেশন সহজে ডেপ্লয় করতে Laravel Forge এবং Vapor দুটি শক্তিশালী টুলস।

  • Laravel Forge: এটি আপনাকে সার্ভার কনফিগার করতে এবং স্বয়ংক্রিয় ডেপ্লয়মেন্ট সেটআপ করতে সাহায্য করে।
  • Laravel Vapor: এটি একটি সার্ভারলেস ডেপ্লয়মেন্ট প্ল্যাটফর্ম, যা AWS Lambda ব্যবহার করে আপনার অ্যাপ্লিকেশনগুলো ডেপ্লয় করতে দেয়।

Laravel ডেপ্লয়মেন্ট সঠিকভাবে সম্পন্ন করার মাধ্যমে আপনার অ্যাপ্লিকেশনটি আরও দ্রুত, নিরাপদ এবং নির্ভরযোগ্য হয়ে উঠবে।

Content added || updated By

আরও দেখুন...

Promotion